import sys
'''
 __del__(self) 析构方法，当对象在内存中不存在引用时，由解释器自动调用，当对象被删除时，执行该方法
 1.对象赋值
   p = Person()
   p1 = p
   说明：p和p1指向同一个地址
 2.删除地址的引用
   del p1 删除p1对地址的引用
 3.查看对对象的引用次数
   import sys
   sys.getrefcount(p)
 4.当一块空间，无任何引用了
   1).垃圾回收机制会自动回收(内存释放)
   2).手动回收 del p
   
'''

class Person:
    def __init__(self, name):
        self.name = name

    def __del__(self):# 建议不要自己写，知道就好
       print('----del----')

p = Person('Tom')
p1 = p
p2 = p
print(p1.name)
print(p2.name)

p1.name = 'Jerry'
print(p.name)
print(p1.name)

del p2
print('删除p2后打印',p.name)

print(sys.getrefcount(p))

del p1
print('删除p1后打印',p.name)

print(sys.getrefcount(p))

del p
# print('删除p后打印',p.name)
#
# print(sys.getrefcount(p))

# 对象赋值
n  = 5
n1 = n
print(n)



